// pages/my-info/my-info.js
Page({
  /**
   * 页面的初始数据
   */
  data: {
    user_info: {},
    user_id: '',
    showAvatarModal: false,
    user_pic: '',
    tempFilePath: '', // 文件临时存放路径
    cloudFileID: "", // 上传到云存储（Cloud Storage）的文件唯一标识符（FileID）
    loadingTimer: null, // 计时器
    showImage: true, // 图片显示是否
  },
  // 获取云数据库中的数据函数
  // 前往活动详情
  view_detail(e) {
    console.log(e)
    const _id = e.currentTarget.dataset.info._id
    wx.navigateTo({
      url: `/pages/active_detail/detail?_id=${_id}`,
    })
  },
  // 通过内存中的openid来获取到登录用户的信息
  user_info() {
    const db = wx.cloud.database()
    wx.getStorage({
      key: 'openid', // 需要获取的缓存 key
      success: (res) => {
        if (res.data) {
          const openid = res.data
          // 获取用户信息
          db.collection('users').where({
              _openid: openid
            })
            .get()
            .then((res) => {
              console.log('获取成功：', res.data)
              const user_id = res.data[0]._id
              // 这里还有用户信息要用
              const user_info = res.data[0]
              // 用户头像地址
              const user_pic = res.data[0].avatarUrl
              this.setData({
                user_id,
                user_info,
                user_pic
              })
              // 用户发布的活动的方法
              this.user_active()
              // 用户报名的活动
              this.signUp_active()
            })
            .catch((err) => {
              console.log('获取失败：', err)
            })
        } else {
          wx.showToast({
            title: '您当前还未登录',
          })
        }
      },
      fail(err) {
        console.error('获取缓存失败', err);
      }
    });
  },
  // 编辑用户信息
  edit_info() {
    wx.navigateTo({
      url: `/pages/edit_info/edit_info?user_id=${this.data.user_id}`,
    })
  },
  // 前往个人中心-活动页面
  toActive(e) {
    const click_id = e.currentTarget.dataset.id
    wx.navigateTo({
      url: `/pages/my-active/my-active?user_id=${this.data.user_id}&click_id=${click_id}`,
    })
  },
  // 打开弹窗--修改头像
  openAvatarModal() {
    this.setData({
      showAvatarModal: true
    })
  },
  // 关闭弹窗--取消按钮
  closeAvatarModal() {
    this.setData({
      showAvatarModal: false,
    })
  },
  // 关闭弹窗--确认按钮
  submitAvatar() {
    // 将图片上传至云存储空间---在确认修改的时候上传云存储
    wx.cloud.uploadFile({
      cloudPath: `images/${Date.now()}.png`, // 指定上传到的云路径（可以自定义路径和文件名）
      filePath: this.data.tempFilePath, // 使用用户选择的临时文件路径
      success: res => {
        console.log('上传成功', res);
        // 上传成功后，获取文件的云存储路径（fileID）----接下来需要拿这个fileID去进行删除
        // 上传到云存储（Cloud Storage）的文件唯一标识符（FileID）
        const fileID = res.fileID;
        console.log('文件云存储路径（fileID）:', fileID);
        this.setData({
          cloudFileID: fileID
        })
        // 获取文件的临时下载链接
        wx.cloud.getTempFileURL({
          fileList: [fileID], // 需要获取下载链接的文件列表
          success: tempRes => {
            const fileTempURL = tempRes.fileList[0].tempFileURL;
            console.log('文件的临时下载链接:', fileTempURL);
            this.setData({
              user_pic: fileTempURL
            })
            // 可以将 fileTempURL 存储到数据库或展示在页面上
          },
          fail: tempErr => {
            console.error('获取下载链接失败', tempErr);
          }
        });
      },
      fail: err => {
        console.error('上传失败', err);
      }
    });
    if (!this.data.user_pic) {
      wx.showToast({
        title: '未上传图片',
        icon: 'none'
      })
    }
    wx.cloud.database().collection("users").doc(this.data.user_id).update({
      data: {
        avatarUrl: this.data.user_pic,
      },
      success: (res) => {
        console.log("更新成功", res, '更改的信息：', this.data.user_pic)
        wx.showToast({
          title: '修改成功',
          icon: 'success'
        });
        this.closeAvatarModal()
      },
      fail(err) {
        console.log('更新失败', err)
        wx.showToast({
          title: '修改失败',
          icon: 'error'
        });
      }
    })
  },
  // 上传图片的方法
  upload_img() {
    // 让用户选择一张图片
    wx.chooseMedia({
      count: 1, // 选择一张图片
      mediaType: ['image'], // 只允许选择图片
      success: chooseResult => {
        // 获取用户选择的图片临时路径
        const tempFilePath = chooseResult.tempFiles[0].tempFilePath;
        console.log('用户选择的图片临时路径:', tempFilePath);
        this.setData({
          tempFilePath
        })
      },
      fail: err => {
        console.error('选择图片失败', err);
      }
    });
  },
  // 删除页面上的图片,删除上传图片
  delete() {
    if (!this.data.cloudFileID) {
      return this.setData({
        user_pic: ''
      });
    }

    wx.showLoading({
      title: '删除中...'
    });

    // 删除云存储文件
    wx.cloud.deleteFile({
      fileList: [this.data.cloudFileID],
      success: res => {
        console.log('云文件删除成功', res);
        this.setData({
          user_pic: '',
          cloudFileID: null
        });
        wx.hideLoading();
        wx.showToast({
          title: '删除成功',
          icon: 'success'
        });
        console.log("删除成功", res)
      },
      fail: err => {
        console.error('云文件删除失败', err);
        wx.hideLoading();
        wx.showToast({
          title: '删除失败',
          icon: 'error'
        });
        // 即使云文件删除失败，仍然清除本地显示
        this.setData({
          user_pic: ''
        });
        console.log("删除失败", err)
      }
    });
  },
  // 登录注册按钮
  toLogin() {
    if (this.data.user_id) {
      wx.showToast({
        title: '您已经登录了',
        icon: 'error'
      })
    } else {
      wx.navigateTo({
        url: '/pages/login/login',
      })
    }
  },
  // 清除缓存按钮
  clear_cache() {
    wx.showModal({
      title: '提示',
      content: '尊敬的用户，你确定要清除缓存吗！',
      complete: (res) => {
        if (res.cancel) {
          console.log('用户点击了取消')
        }
        if (res.confirm) {
          console.log('用户点击了确定')
          // wx.clearStorage()
          wx.showToast({
            title: '清除成功',
            icon: 'success'
          })
          // this.setData({
          //   user_id:''
          // })
          // this.user_info();
        }
      }
    })
  },
  // 退出登录按钮
  logout() {
    wx.showModal({
      title: '提示',
      content: '尊敬的用户，你确定要退出登录吗！',
      complete: (res) => {
        if (res.cancel) {
          console.log('用户点击了取消')
        }
        if (res.confirm) {
          console.log('用户点击了确定')
          wx.clearStorage()
          // wx.switchTab({
          //   url: '/pages/home/home',
          // })
          wx.showToast({
            title: '退出成功',
            icon: 'success'
          })
          this.setData({
            user_id: ''
          })
          this.user_info();
        }
      }
    })
  },
  // 前往关于我们按钮
  toAboutMe() {
    wx.navigateTo({
      url: '/pages/about_me/about_me',
    })
  },
  // 注销账号按钮
  cancel_account() {
    wx.showModal({
      title: '账户注销确认',
      content: '此操作将永久删除您的账户及所有关联数据，且不可恢复！',
      confirmText: '确认注销',
      confirmColor: '#FF4444',
      cancelText: '再想想',
      complete: (res) => {
        const db = wx.cloud.database()
        if (res.cancel) {
          console.log('用户点击了取消')
        }
        if (res.confirm) {
          console.log('用户点击了确定')
          const res = db.collection('users').doc(this.data.user_id).update({
            isDeleted: true
          })
          res.then(res => {
              console.log('注销成功', res)
              wx.showToast({
                title: '注销成功',
                icon: 'success'
              })
            })
            .catch(err => {
              console.log('注销失败', err)
              wx.showToast({
                title: '注销失败',
                icon: 'error'
              })
            })

        }
      }
    })
  },
  // 重新启动按钮
  restart() {
    wx.showModal({
      title: '提示',
      content: '尊敬的用户，你确定要重新启动吗！',
      complete: (res) => {
        if (res.cancel) {
          console.log('用户点击了取消')
        }
        if (res.confirm) {
          console.log('用户点击了确定')
          // wx.clearStorage()

          // 关闭所有页面并打开首页（需配置首页路径）
          wx.reLaunch({
            url: '/pages/home/home', // 你的首页路径
            complete: () => {
              // 清除本地缓存（可选）
              // wx.clearStorageSync();
              // 重置全局数据（可选）
              getApp().globalData = {};
            }
          });
          wx.showToast({
            title: '操作成功',
            icon: 'success'
          })
          // this.setData({
          //   user_id:''
          // })
          // this.user_info();
        }
      }
    })
  },
  // 设置超时的加载器
  showLoadingWithTimeout(title = '加载中', timeout = 10000) {
    // 显示加载提示
    wx.showLoading({
      title
    });

    // 设置超时自动关闭
    loadingTimer = setTimeout(() => {
      wx.hideLoading();
      wx.showToast({
        title: '加载超时',
        icon: 'none'
      });
      // 可在此处执行超时后的其他操作
    }, timeout);
  },
  // 在数据加载完成时调用此方法
  hideLoading() {
    if (loadingTimer) {
      clearTimeout(loadingTimer); // 清除计时器
      loadingTimer = null;
    }
    wx.hideLoading();
  },
  /**
   * 生命周期函数--监听页面加载
   */
  onLoad(options) {
    wx.setNavigationBarTitle({
      title: '个人中心',
    })
    // 开始加载（设置10秒超时）

    wx.showLoading({
      title:"加载中.."
    });
  },
  // 页面显示/切入前台时触发
  onShow() {
    // 在钩子函数中调用数据函数
    this.user_info();
    wx.hideLoading();
  },

  // 图片懒加载的问题
  onImagesLoaded() {
    console.log("图片加载完成", this.data)
    // 在图片加载完成后，设置 showImage 为 true，显示图片
    this.setData({
      showImage: false
    })
  },
  onImageError: () => {
    console.error('图片加载失败')
  }
})